package com.yang.frost.blueberry.shiro.service;

import com.yang.frost.blueberry.shiro.jwt.JwtToken;
import com.yang.frost.blueberry.shiro.vo.LoginSysUserRedisVo;
import com.yang.frost.blueberry.shiro.vo.LoginSysUserVo;

/**
 * @author 10296
 * @date 2021/1/25
 * @Description: 登录信息Redis缓存操作服务
 */
public interface LoginRedisService {
    /**
     * 缓存登录信息
     *
     * @param jwtToken
     * @param loginSysUserVo
     */
    void cacheLoginInfo(JwtToken jwtToken, LoginSysUserVo loginSysUserVo);

    /**
     * 刷新登录信息
     *
     * @param oldToken
     * @param username
     * @param newJwtToken
     */
    void refreshLoginInfo(String oldToken, String username, JwtToken newJwtToken);

    /**
     * 通过用户名，从缓存中获取登录用户名
     *
     * @param username
     * @return
     */
    LoginSysUserRedisVo getLoginSysUserRedisVo(String username);

    /**
     * 通过token 从缓存中获取用户信息
     *
     * @param token token
     * @return ''
     */
    LoginSysUserVo getLoginSysUserRedisVoByToken(String token);

    /**
     * 获取登录用户对象
     *
     * @param username
     * @return
     */
    LoginSysUserVo getLoginSysUserVo(String username);

    /**
     * 通过token获取登录用户对象
     *
     * @param token
     * @return
     */
    LoginSysUserVo getLoginSysUserVoByToken(String token);

    /**
     * 通过用户名获取盐值
     *
     * @param username
     * @return
     */
    String getSalt(String username);

    /**
     * 删除对应用户的Redis缓存
     *
     * @param token    token
     * @param username username
     */
    void deleteLoginInfo(String token, String username);

    /**
     * 判断token再redis中是否粗壮乃
     *
     * @param token
     * @return
     */
    boolean exists(String token);

    /**
     * 删除用户所有登录信息
     *
     * @param username
     */
    void deleteUserAllCache(String username);


}
